iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0

「夏天姐!我們兩個來囉!」菁菁跟曉欣一起進來丹提咖啡,開心地打招呼

「兩位感情越來越好了!」夏天開心的打開兩題題目: 326. Power of Three342. Power of Four

「之前病假讓我有些工作還沒處理好,我先處理工作,你們兩位自己試看看能不能解出來?」

「沒問題,看我跟菁菁的厲害!」

沒想到一陣子之前,寫兩個數字相加,還畏畏縮縮的曉欣,現在儼然是工程師的樣子了。

兩人一番討論之後,很快想出了第一題的解答

class Solution {
    fun isPowerOfThree(n: Int) = when {
        n <= 0 -> false
        else -> 1162261467 % n == 0
    }
}

第二題兩人似乎有點卡住,花了蠻多時間,還是沒想出好的解法。

「兩位先休息一下吧」

「先等一等!我覺得我們好像差一點點就想出來了」菁菁說

「堅持是件好事。不過,卡住的時候,如果一直鑽牛角尖下去,有時候反而會忽略很簡單的答案喔!先喝杯咖啡吧」夏天端來三杯咖啡說到。

喝了咖啡,外加一陣閒聊時間過後,兩人重新看了題目

「哎呀!我們剛剛都沒想到,用對數一下就解開了」

import kotlin.math.ceil
import kotlin.math.floor
import kotlin.math.log

class Solution {
    fun isPowerOfFour(n: Int): Boolean {
        if (n <= 0) {
            return false
        }
        return (floor(log(n.toDouble(), 4.0)) == ceil(log(n.toDouble(), 4.0)))
    }
}

「如何?其實很簡單對吧?」夏天笑著說。「那這題呢?」 125. Valid Palindrome

「這題跟之前的 7. Reverse Integer 很像」搭配上 10. Regular Expression Matching 對正規表示式的經驗,兩人只花一點時間,就寫出了正確解答:

class Solution {
    fun isPalindrome(s: String): Boolean {
        val cleanString = Regex("[^a-z0-9]")
            .replace(s.toLowerCase(), "")
        return cleanString == cleanString.reversed()
    }
}

「你們真的太棒了!」夏天開心的說,又去買了蛋糕回來請大家吃。


上一篇
Day 19:合作無間的默契:1、169
下一篇
Day 21:自主學習、linked list 和 scope function: 18、12、206
系列文
Kotlin 程式人:Leetcode 意外旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言